home *** CD-ROM | disk | FTP | other *** search
- ;*************************** CL.LSP **************************************
-
- ; By Simon Jones Autodesk Ltd , London March 1987
-
- ; This macro constructs a pair of of centre lines through the
- ; centre of a circle. The lines are put on a layer "CENTER".
-
-
- (defun C:CL (/ clay sblip scmde e cen rad d ts xx)
- (setq clay (getvar "CLAYER"))
- (setq sblip (getvar "BLIPMODE"))
- (setq scmde (getvar "CMDECHO"))
- (setvar "CMDECHO" 0)
- (setq e nil xx "Yes")
- (setq ts (tblsearch "LAYER" "CENTER"))
- (if (null ts)
- (prompt "\nCreating new layer - CENTER. ")
- (progn
- (if (= (cdr (assoc 70 ts)) 1)
- (progn
- (prompt "\nLayer CENTER is frozen. ")
- (initget "Yes No")
- (setq xx (getkword "\nProceed (Y/N) <No>: "))
- (if (= xx "Yes")
- (command "LAYER" "T" "CENTER" "")
- )
- )
- )
- )
- )
-
- (if (= xx "Yes")
- (progn
- (while (null e)
- (setq e (entsel "\nSelct arc or circle: "))
- (if e
- (progn
- (setq e (car e))
- (if (and
- (/= (cdr (assoc 0 (entget e))) "ARC")
- (/= (cdr (assoc 0 (entget e))) "CIRCLE")
- )
- (progn (prompt "\nEntity is a ")
- (princ (cdr (assoc 0 (entget e))))
- (setq e nil)
- )
- )
- )
- )
- )
- (setq cen (cdr (assoc 10 (entget e))))
- (setq rad (cdr (assoc 40 (entget e))))
- (prompt "\nRadius is ")
- (princ (rtos rad))
- (initget 1 "Length")
- (setq d (getdist "\n<Extension>/Length: "))
- (if (= d "Length")
- (progn
- (initget 1)
- (setq d (getdist cen "\nLength: "))
- )
- (setq d (+ rad d))
- )
- (setvar "BLIPMODE" 0)
- (command "LAYER" "M" "CENTER" "LT" "CENTER" "CENTER" "")
- (command "LINE" (list (car cen) (- (cadr cen) d))
- (list (car cen) (+ (cadr cen) d))
- ""
- )
- (command "LINE" (list (- (car cen) d) (cadr cen))
- (list (+ (car cen) d) (cadr cen))
- ""
- )
- (command "LAYER" "S" clay "")
- )
- )
- (setvar "BLIPMODE" sblip)
- (setvar "CMDECHO" scmde)
- (princ)
- )